home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-9.10-netbook-remix-PL.iso / casper / filesystem.squashfs / usr / share / hplip / ui4 / faxsetupdialog.py < prev    next >
Text File  |  2009-10-09  |  9KB  |  296 lines

  1. # -*- coding: utf-8 -*-
  2. #
  3. # (c) Copyright 2001-2009 Hewlett-Packard Development Company, L.P.
  4. #
  5. # This program is free software; you can redistribute it and/or modify
  6. # it under the terms of the GNU General Public License as published by
  7. # the Free Software Foundation; either version 2 of the License, or
  8. # (at your option) any later version.
  9. #
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. # GNU General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU General Public License
  16. # along with this program; if not, write to the Free Software
  17. # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  18. #
  19. # Authors: Don Welch
  20. #
  21.  
  22. # StdLib
  23. import operator
  24.  
  25. # Local
  26. from base.g import *
  27. from base import device, utils
  28. from prnt import cups
  29. from base.codes import *
  30. from ui_utils import *
  31.  
  32. # Qt
  33. from PyQt4.QtCore import *
  34. from PyQt4.QtGui import *
  35.  
  36. # Ui
  37. from faxsetupdialog_base import Ui_Dialog
  38. from deviceuricombobox import DEVICEURICOMBOBOX_TYPE_FAX_ONLY
  39.  
  40. fax_enabled = prop.fax_build
  41.  
  42. if fax_enabled:
  43.     try:
  44.         from fax import fax
  45.     except ImportError:
  46.         # This can fail on Python < 2.3 due to the datetime module
  47.         # or if fax was diabled during the build
  48.         fax_enabled = False
  49.  
  50. if not fax_enabled:
  51.     log.error("Fax disabled.")
  52.  
  53.  
  54. class FaxSetupDialog(QDialog, Ui_Dialog):
  55.     def __init__(self, parent, device_uri):
  56.         QDialog.__init__(self, parent)
  57.         self.setupUi(self)
  58.         self.device_uri = device_uri
  59.         self.initUi()
  60.         self.dev = None
  61.  
  62.         self.user_settings = UserSettings()
  63.         self.user_settings.load()
  64.         self.user_settings.debug()
  65.  
  66.         QTimer.singleShot(0, self.updateUi)
  67.  
  68.  
  69.     def initUi(self):
  70.         # connect signals/slots
  71.         self.connect(self.CancelButton, SIGNAL("clicked()"), self.CancelButton_clicked)
  72.         self.connect(self.FaxComboBox, SIGNAL("DeviceUriComboBox_noDevices"), self.FaxComboBox_noDevices)
  73.         self.connect(self.FaxComboBox, SIGNAL("DeviceUriComboBox_currentChanged"), self.FaxComboBox_currentChanged)
  74.         self.FaxComboBox.setType(DEVICEURICOMBOBOX_TYPE_FAX_ONLY)
  75.  
  76.         # Application icon
  77.         self.setWindowIcon(QIcon(load_pixmap('hp_logo', '128x128')))
  78.  
  79.         if self.device_uri:
  80.             self.FaxComboBox.setInitialDevice(self.device_uri)
  81.  
  82.         self.NameCompanyLineEdit.setMaxLength(50)
  83.         self.FaxNumberLineEdit.setMaxLength(50)
  84.         self.FaxNumberLineEdit.setValidator(PhoneNumValidator(self.FaxNumberLineEdit))
  85.         self.VoiceNumberLineEdit.setMaxLength(50)
  86.         self.VoiceNumberLineEdit.setValidator(PhoneNumValidator(self.VoiceNumberLineEdit))
  87.         self.EmailLineEdit.setMaxLength(50)
  88.  
  89.         self.connect(self.NameCompanyLineEdit, SIGNAL("editingFinished()"),
  90.                      self.NameCompanyLineEdit_editingFinished)
  91.  
  92.         self.connect(self.NameCompanyLineEdit, SIGNAL("textChanged(const QString &)"),
  93.                      self.NameCompanyLineEdit_textChanged)
  94.  
  95.         self.connect(self.FaxNumberLineEdit, SIGNAL("editingFinished()"),
  96.                      self.FaxNumberLineEdit_editingFinished)
  97.  
  98.         self.connect(self.FaxNumberLineEdit, SIGNAL("textChanged(const QString &)"),
  99.                      self.FaxNumberLineEdit_textChanged)
  100.  
  101.         self.connect(self.VoiceNumberLineEdit, SIGNAL("editingFinished()"),
  102.                      self.VoiceNumberLineEdit_editingFinished)
  103.  
  104.         self.connect(self.VoiceNumberLineEdit, SIGNAL("textChanged(const QString &)"),
  105.                      self.VoiceNumberLineEdit_textChanged)
  106.  
  107.         self.connect(self.EmailLineEdit, SIGNAL("editingFinished()"),
  108.                      self.EmailLineEdit_editingFinished)
  109.  
  110.         self.connect(self.EmailLineEdit, SIGNAL("textChanged(const QString &)"),
  111.                      self.EmailLineEdit_textChanged)
  112.  
  113.         self.name_company_dirty = False
  114.         self.fax_number_dirty = False
  115.         self.voice_number_dirty = False
  116.         self.email_dirty = False
  117.  
  118.  
  119.     def updateUi(self):
  120.         if not fax_enabled:
  121.             FailureUI(self, self.__tr("<b>PC send fax support is not enabled.</b><p>Re-install HPLIP with fax support or use the device front panel to send a fax.</p><p>Click <i>OK</i> to exit.</p>"))
  122.             self.close()
  123.             return
  124.  
  125.         self.FaxComboBox.updateUi()
  126.  
  127.  
  128.     def FaxComboBox_currentChanged(self, device_uri):
  129.         self.device_uri = device_uri
  130.         self.updateCoverpageTab()
  131.  
  132.         if self.dev is not None:
  133.             self.dev.close()
  134.  
  135.         try:
  136.             self.dev = fax.getFaxDevice(self.device_uri)
  137.         except Error:
  138.             CheckDeviceUI(self)
  139.             return
  140.  
  141.         self.updateHeaderTab()
  142.  
  143.  
  144.  
  145.     def FaxComboBox_noDevices(self):
  146.         FailureUI(self, self.__tr("<b>No devices that require fax setup found.</b>"))
  147.         self.close()
  148.  
  149.     #
  150.     # Name/Company (for TTI header) (stored in device)
  151.     #
  152.  
  153.     def NameCompanyLineEdit_editingFinished(self):
  154.         self.saveNameCompany(unicode(self.NameCompanyLineEdit.text()))
  155.  
  156.  
  157.     def NameCompanyLineEdit_textChanged(self, s):
  158.         self.name_company_dirty = True
  159.  
  160.  
  161.     def saveNameCompany(self, s):
  162.         self.name_company_dirty = False
  163.         beginWaitCursor()
  164.         try:
  165.             try:
  166.                 log.debug("Saving station name %s to device" % s)
  167.                 self.dev.setStationName(s)
  168.             except Error:
  169.                 CheckDeviceUI()
  170.         finally:
  171.             endWaitCursor()
  172.  
  173.     #
  174.     # Fax Number (for TTI header) (stored in device)
  175.     #
  176.  
  177.     def FaxNumberLineEdit_editingFinished(self):
  178.         self.saveFaxNumber(unicode(self.FaxNumberLineEdit.text()))
  179.  
  180.  
  181.     def FaxNumberLineEdit_textChanged(self, s):
  182.         self.fax_number_dirty = True
  183.  
  184.  
  185.     def saveFaxNumber(self, s):
  186.         self.fax_number_dirty = False
  187.         beginWaitCursor()
  188.         try:
  189.             try:
  190.                 log.debug("Saving fax number %s to device" % s)
  191.                 self.dev.setPhoneNum(s)
  192.             except Error:
  193.                 CheckDeviceUI()
  194.         finally:
  195.             endWaitCursor()
  196.  
  197.     #
  198.     # Voice Number (for coverpage) (stored in ~/.hplip/hplip.conf)
  199.     #
  200.  
  201.     def VoiceNumberLineEdit_editingFinished(self):
  202.         self.saveVoiceNumber(unicode(self.VoiceNumberLineEdit.text()))
  203.  
  204.  
  205.     def VoiceNumberLineEdit_textChanged(self, s):
  206.         self.voice_number_dirty = True
  207.  
  208.  
  209.     def saveVoiceNumber(self, s):
  210.         log.debug("Saving voice number (%s) to ~/.hplip/hplip.conf" % s)
  211.         self.voice_number_dirty = False
  212.         #user_conf.set('fax', 'voice_phone', s)
  213.         self.user_settings.voice_phone = s
  214.         self.user_settings.save()
  215.  
  216.     #
  217.     # EMail (for coverpage) (stored in ~/.hplip/hplip.conf)
  218.     #
  219.  
  220.     def EmailLineEdit_editingFinished(self):
  221.         self.saveEmail(unicode(self.EmailLineEdit.text()))
  222.  
  223.  
  224.     def EmailLineEdit_textChanged(self, s):
  225.         self.email_dirty = True
  226.  
  227.  
  228.     def saveEmail(self, s):
  229.         log.debug("Saving email address (%s) to ~/.hplip/hplip.conf" % s)
  230.         self.email_dirty = False
  231.         #user_conf.set('fax', 'email_address', s)
  232.         self.user_settings.email_address = s
  233.         self.user_settings.save()
  234.  
  235.     #
  236.     #
  237.     #
  238.  
  239.     def CancelButton_clicked(self):
  240.         self.close()
  241.  
  242.  
  243.     def updateHeaderTab(self):
  244.         beginWaitCursor()
  245.         try:
  246.             try:
  247.                 name_company = self.dev.getStationName()
  248.                 log.debug("name_company = '%s'" % name_company)
  249.                 self.NameCompanyLineEdit.setText(name_company)
  250.                 fax_number = self.dev.getPhoneNum()
  251.                 log.debug("fax_number = '%s'" % fax_number)
  252.                 self.FaxNumberLineEdit.setText(fax_number)
  253.             except Error:
  254.                 CheckDeviceUI()
  255.         finally:
  256.             endWaitCursor()
  257.  
  258.  
  259.     def updateCoverpageTab(self):
  260.         #voice_phone = user_conf.get('fax', 'voice_phone')
  261.         voice_phone = self.user_settings.voice_phone
  262.         log.debug("voice_phone = '%s'" % voice_phone)
  263.         self.VoiceNumberLineEdit.setText(voice_phone)
  264.         #email_address = user_conf.get('fax', 'email_address')
  265.         email_address = self.user_settings.email_address
  266.         log.debug("email_address = '%s'" % email_address)
  267.         self.EmailLineEdit.setText(email_address)
  268.  
  269.  
  270.     def closeEvent(self, e):
  271.         if self.voice_number_dirty:
  272.             self.VoiceNumberLineEdit.emit(SIGNAL("editingFinished()"))
  273.  
  274.         if self.name_company_dirty:
  275.             self.NameCompanyLineEdit.emit(SIGNAL("editingFinished()"))
  276.  
  277.         if self.email_dirty:
  278.             self.EmailLineEdit.emit(SIGNAL("editingFinished()"))
  279.  
  280.         if self.fax_number_dirty:
  281.             self.FaxNumberLineEdit.emit(SIGNAL("editingFinished()"))
  282.  
  283.         if self.dev is not None:
  284.             self.dev.close()
  285.  
  286.         e.accept()
  287.  
  288.     #
  289.     # Misc
  290.     #
  291.  
  292.     def __tr(self,s,c = None):
  293.         return qApp.translate("FaxSetupDialog",s,c)
  294.  
  295.  
  296.